import adminListView from "$v/adminList";


//引入api
import {
    addAdminRequest,
    adminListRequest,
    deleteAdminRequest,
} from '$a/admin.js';


//封装展示所有管理员列表的功能函数,当初始化的时候,添加的时候,删除的时候都要执行
const showAdminList = async (res) => {

    let adminListResult = null;
    try {
        adminListResult = await adminListRequest();
        // console.log(adminListResult.data.data);
    } catch (e) {
        alert("获取管理员列表异常:" + e.message)
    }

    //渲染二级路由视图
    res.render(adminListView({
        adminList: adminListResult.data.data
    }));

}


export default async (req, res) => {
    await showAdminList(res)

    //在sem路由中,在路由的回调函数中可以获取整个document,所以我们可以在这个位置操作DOM

    //添加管理员功能
    //给保存按钮绑定点击事件,添加管理员
    document.onclick = async function (e) {
        //当点击的是保存按钮的时候执行添加管理员逻辑  添加成功重新渲染页面
        if (e.target.id === "saveAdminBtn") {
            //可以通过表单元素的name属性获取某个元素
            const adminNameValue = document.adminForm.adminName.value.trim();
            const passWordValue = document.adminForm.passWord.value.trim();
            const rePpassWordValue = document.adminForm.rePassWord.value.trim();

            //如果有一个没输入就不能发请求
            if (!adminNameValue || !passWordValue || !rePpassWordValue) {
                return alert("输入的内容不能为空,再给你一次机会");
            }

            //两次输入的密码不一致不能发请求
            if (passWordValue !== rePpassWordValue) {
                return alert("两次密码不一致,您的电脑将在10s后爆炸");
            }

            //可以向后端发请求
            try {
                await addAdminRequest({
                    adminName: adminNameValue,
                    password: passWordValue,
                    regTime: new Date().toLocaleString()
                })
                alert("添加成功")
                //添加成功之后,管理添加窗口(手动触发某个元素上的点击事件)
                document.getElementById('closeAdd').click();
                //清空表单
                document.adminForm.reset();


                //重新渲染页面
                showAdminList(res);


            } catch (e) {
                alert(e.message);
                //清空表单
                document.adminForm.reset();
            }
        }

        //当点击的是删除按钮的时候执行删除管理员逻辑  删除成功重新渲染页面
        if (e.target.nodeName === 'BUTTON' && e.target.parentNode.nodeName === 'TD') {
            //获取当前删除按钮对应的adminName(在生成删除按钮的时候 就把自定义属性设置上去)
            const adminname = e.target.dataset.adminname;
            try {
                //发送删除管理员请求
                const deleteResult = await deleteAdminRequest(adminname);
                alert(deleteResult.data.msg);


                //删除成功重新渲染页面
                showAdminList(res);


            } catch (e) {
                alert("删除管理员" + adminName + "失败")
            }
        }



    }

}